package com.jdd.modules.parkmonthly.entity;


import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jdd.common.util.excel.annotation.Excel;
import com.jdd.modules.parkcar.entity.ParkCarMonthly;
import com.jdd.modules.parkcar.entity.ParkSpace;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Description: 月卡信息表
 * @Author: jdd
 * @Date: 2021-11-04
 * @Version: V1.0
 */
@Data
@TableName("monthly_card_info")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "monthly_card_info对象", description = "月卡信息表")
public class MonthlyCardInfo {

    /**
     * id
     */
    @TableId(type = IdType.UUID)
    @ApiModelProperty(value = "id")
    private String id;
    /**
     * 停车场编号
     */
    @Excel(name = "停车场编号", width = 15)
    @ApiModelProperty(value = "停车场编号")
    private String parkCode;
    /**
     * 停车场名称
     */
    @Excel(name = "停车场名称", width = 15)
    @ApiModelProperty(value = "停车场名称")
    private String parkName;
    /**
     * 月租编号
     */
    @Excel(name = "月租编号", width = 15)
    @ApiModelProperty(value = "月租编号")
    private String monthlyCode;
    /**
     * 套餐id
     */
    @Excel(name = "套餐id", width = 15)
    @ApiModelProperty(value = "套餐id")
    private String packageId;
    /**
     * 套餐名称
     */
    @Excel(name = "套餐名称", width = 15)
    @ApiModelProperty(value = "套餐名称")
    private String packageName;
    /**
     * 车主姓名
     */
    @Excel(name = "车主姓名", width = 15)
    @ApiModelProperty(value = "车主姓名")
    private String carOwnerName;
    /**
     * 部门id
     */
    @Excel(name = "部门id", width = 15)
    @ApiModelProperty(value = "部门id")
    private String monthlyDepartmentId;
    /**
     * 部门名称
     */
    @Excel(name = "部门名称", width = 15)
    @ApiModelProperty(value = "部门名称")
    private String monthlyDepartmentName;
    /**
     * 住址
     */
    @Excel(name = "住址", width = 15)
    @ApiModelProperty(value = "住址")
    private String address;
    /**
     * 通行权限id
     */
    @Excel(name = "通行权限id", width = 15)
    @ApiModelProperty(value = "通行权限id")
    private String throughAuthorityId;
    /**
     * 通行权限名称
     */
    @Excel(name = "通行权限名称", width = 15)
    @ApiModelProperty(value = "通行权限名称")
    private String throughAuthorityName;
    /**
     * 手机号码
     */
    @Excel(name = "手机号码", width = 15)
    @ApiModelProperty(value = "手机号码")
    private String telephone;
    /**
     * 月租状态
     */
    @Excel(name = "月租状态 (1、正常 2、报停 3、注销 4、过期) ", width = 15)
    @ApiModelProperty(value = "月租状态 (1、正常 2、报停 3、注销 4、过期) ")
    private Integer monthlyStatus;
    /**
     * 有效期开始时间
     */
    @Excel(name = "有效期开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "有效期开始时间")
    private Date beginTime;
    /**
     * 有效期结束时间
     */
    @Excel(name = "有效期结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "有效期结束时间")
    private Date endTime;
    /**
     * 月租金额
     */
    @TableField(exist = false)
    private BigDecimal monthlyMoney;
    /**
     * 备注信息
     */
    @Excel(name = "备注信息", width = 15)
    @ApiModelProperty(value = "备注信息")
    private String remark;
    /**
     * 创建人id
     */
    @Excel(name = "创建人id", width = 15)
    @ApiModelProperty(value = "创建人id")
    private String createUserId;
    /**
     * 创建人名称
     */
    @Excel(name = "创建人名称", width = 15)
    @ApiModelProperty(value = "创建人名称")
    private String createUserName;
    /**
     * 创建时间
     */
    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**
     * 修改人id
     */
    @Excel(name = "修改人id", width = 15)
    @ApiModelProperty(value = "修改人id")
    private String updateUserId;
    /**
     * 修改人名称
     */
    @Excel(name = "修改人名称", width = 15)
    @ApiModelProperty(value = "修改人名称")
    private String updateUserName;
    /**
     * 修改时间
     */
    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "修改时间")
    private Date updateTime;
    /**
     * 删除状态
     */
    @ApiModelProperty(value = "删除状态")
    @TableLogic
    private Integer delFlag;
    /**
     * 一对多冗余查询
     */
    @TableField(exist = false)
    List<ParkCarMonthly> parkCarMonthlies;
    /**
     * 冗余字典
     */
    @TableField(exist = false)
    private String isUpload;

    @TableField(exist = false)
    private String plateNos;

    @TableField(exist = false)
    private String carPlaces;
    /**
     * 车位信息集合
     */
    @TableField(exist = false)
    private List<String> parkNumberList;
    /**
     * 月租车信息集合
     */
    @TableField(exist = false)
    private List<String> plateNoList;
    /**
     * 车位信息集合
     */
    @TableField(exist = false)
    private List<ParkSpace> parkSpaceList;
    /**
     * 同步数据用
     */
    @TableField(exist = false)
    private List<ParkSpace> addParkSpaceLists;
    /**
     * 操作类型 用于确认提示接口
     */
    @TableField(exist = false)
    private Integer operationType;
    /**
     * 是否立即生效，1，立即生效，2，下次入场生效
     */
    @TableField(exist = false)
    private Integer isEffect;

    @TableField(exist = false)
    private String messageId;

    @TableField(exist = false)
    private Map map;
    /**
     * 编辑页面，删除车牌号
     */
    @TableField(exist = false)
    private List<String> addPlateNos;
    /**
     * 编辑页面，新增车牌号
     */
    @TableField(exist = false)
    private List<String> deletePlateNos;
    /**
     * 0：过期；1：临期; 3:正常；
     */
    @Excel(name = "是否到期", width = 20)
    @TableField(exist = false)
    private String isLay;
    /**
     * 操作记录
     */
    @TableField(exist = false)
    private MonthlyCardEditInfo monthlyCardEditInfo;
}
